checkout: Always do chmod even in _MODE_USER
authorColin Walters <walters@verbum.org>
Tue, 1 Apr 2014 17:07:17 +0000 (13:07 -0400)
committerColin Walters <walters@verbum.org>
Tue, 1 Apr 2014 17:07:17 +0000 (13:07 -0400)
The previous commit here changed things so that we do mkdir(x, 0700),
then fchmod later only if we created the directory.

However the logic was incorrect; we still need to chmod even in
MODE_USER if we created the directory.

src/libostree/ostree-repo-checkout.c

index e96598072679f3cd1389410a8942bcb5031ae414..126545debfdc12a84e148f5a662cc0cd5fb47219 100644 (file)
@@ -630,7 +630,7 @@ checkout_tree_at (OstreeRepo                        *self,
   /* We do fchmod/fchown last so that no one else could access the
    * partially created directory and change content we're laying out.
    */
-  if (!did_exist && mode != OSTREE_REPO_CHECKOUT_MODE_USER)
+  if (!did_exist)
     {
       do
         res = fchmod (destination_dfd,
@@ -641,7 +641,10 @@ checkout_tree_at (OstreeRepo                        *self,
           ot_util_set_error_from_errno (error, errno);
           goto out;
         }
+    }
 
+  if (!did_exist && mode != OSTREE_REPO_CHECKOUT_MODE_USER)
+    {
       do
         res = fchown (destination_dfd,
                       g_file_info_get_attribute_uint32 (source_info, "unix::uid"),